{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Device backend noise model simulations\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "This notebook shows how to use the Qiskit Aer `noise` module to automatically generate a basic noise model for an IBMQ hardware device, and use this model to do noisy simulations of `QuantumCircuits` to study the effects of errors which occur on real devices.\n",
    "\n",
    "Note, that these automatic models are only an *approximation* of the real errors that occur on actual devices, due to the fact that they must be build from a limited set of input parameters related to *average error rates* on gates. The study of quantum errors on real devices is an active area of research and we discuss the Qiskit Aer tools for configuring more detailed noise models in another notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-19T16:57:28.062507Z",
     "start_time": "2019-08-19T16:57:24.202560Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from qiskit import IBMQ, transpile\n",
    "from qiskit import QuantumCircuit\n",
    "from qiskit.providers.aer import AerSimulator\n",
    "from qiskit.tools.visualization import plot_histogram"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Device Backend Noise Model\n",
    "\n",
    "The *Qiskit Aer* device noise model automatically generates a simplified noise model for a real device. This model is generated using the calibration information reported in the `BackendProperties` of a device and takes into account\n",
    "\n",
    "* The *gate_error* probability of each basis gate on each qubit.\n",
    "* The *gate_length* of each basis gate on each qubit.\n",
    "* The $T_1$, $T_2$ relaxation time constants of each qubit.\n",
    "* The readout error probability of each qubit.\n",
    "\n",
    "### Terra Mock  Backends\n",
    "\n",
    "We will use real noise data for an IBM Quantum device using the date stored in Qiskit Terra. Specifically, in this tutorial, the device is `ibmq_vigo`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-19T16:57:32.162207Z",
     "start_time": "2019-08-19T16:57:32.159466Z"
    }
   },
   "outputs": [],
   "source": [
    "from qiskit.test.mock import FakeVigo\n",
    "device_backend = FakeVigo()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Test circuit for device and simulation comparison\n",
    "\n",
    "Now we construct a test circuit to compare the output of the real device with the noisy output simulated on the Qiskit Aer `AerSimulator`. We will prepare a 3-qubit GHZ state $\\frac{1}{2}(|0,0,0\\rangle + |1,1,1\\rangle)$ on qubits 0, 1 and 2. Before running with noise or on the device we show the ideal expected output with no noise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-19T16:57:32.330124Z",
     "start_time": "2019-08-19T16:57:32.175615Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Construct quantum circuit\n",
    "circ = QuantumCircuit(3, 3)\n",
    "circ.h(0)\n",
    "circ.cx(0, 1)\n",
    "circ.cx(1, 2)\n",
    "circ.measure([0, 1, 2], [0, 1, 2])\n",
    "\n",
    "sim_ideal = AerSimulator()\n",
    "\n",
    "# Execute and get counts\n",
    "result = sim_ideal.run(transpile(circ, sim_ideal)).result()\n",
    "counts = result.get_counts(0)\n",
    "plot_histogram(counts, title='Ideal counts for 3-qubit GHZ state')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generating a simulator that mimics a device\n",
    "\n",
    "We call `from_backend` to create a simulator for `ibmq_vigo`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "sim_vigo = AerSimulator.from_backend(device_backend)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By storing the device properties in `vigo_simulator`, we ensure that the appropriate basis gates and coupling map are used when compiling circuits for simulation, thereby most closely mimicking the gates that will be executed on a real device. In addition `vigo_simulator` contains an approximate noise model consisting of:\n",
    "\n",
    "* **Single-qubit gate errors** consisting of a single qubit depolarizing error followed by a single qubit thermal relaxation error.\n",
    "* **Two-qubit gate errors** consisting of a two-qubit depolarizing error followed by single-qubit thermal relaxation errors on both qubits in the gate.\n",
    "* **Single-qubit readout errors** on the classical bit value obtained from measurements on individual qubits.\n",
    "\n",
    "For the gate errors the error parameter of the thermal relaxation errors is derived using the `thermal_relaxation_error` function from `aer.noise.errors` module, along with the individual qubit $T_1$ and $T_2$ parameters, and the `gate_time` parameter from the device backend properties. The probability of the depolarizing error is then set so that the combined average gate infidelity from the depolarizing error followed by the thermal relaxation is equal to the `gate_error` value from the backend properties.\n",
    "\n",
    "For the readout errors the probability that the recorded classical bit value will be flipped from the true outcome after a measurement is given by the qubit `readout_errors`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Running a noise simulation\n",
    "\n",
    "Once we have created a noisy simulator backend based on a real device we can use it to run noisy simulations.\n",
    "\n",
    "**Important:** When running noisy simulations it is *critical* to `transpile` the circuit for the backend so that the circuit is transpiled to the correct noisy basis gate set for the backend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-19T16:57:36.864987Z",
     "start_time": "2019-08-19T16:57:36.672055Z"
    },
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Transpile the circuit for the noisy basis gates\n",
    "tcirc = transpile(circ, sim_vigo)\n",
    "\n",
    "# Execute noisy simulation and get counts\n",
    "result_noise = sim_vigo.run(tcirc).result()\n",
    "counts_noise = result_noise.get_counts(0)\n",
    "plot_histogram(counts_noise,\n",
    "               title=\"Counts for 3-qubit GHZ state with device noise model\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If transpilation is skipped noise from the device noise model will not be applied to gates in the circuit that are supported by the simulator, but not supported by the mimiced backend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>0.25.0</td></tr><tr><td>Terra</td><td>0.17.0</td></tr><tr><td>Aer</td><td>0.8.0</td></tr><tr><td>Ignis</td><td>0.6.0</td></tr><tr><td>Aqua</td><td>0.9.0</td></tr><tr><td>IBM Q Provider</td><td>0.12.2</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.7 (default, May  6 2020, 04:59:01) \n",
       "[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>6</td></tr><tr><td>Memory (Gb)</td><td>32.0</td></tr><tr><td colspan='2'>Fri Apr 02 12:01:10 2021 EDT</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2021.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
